1 // DerelictCL - a Derelict based dynamic binding for OpenCL 2 // written in the D programming language 3 // 4 // Copyright: MeinMein 2013-2014. 5 // License: Boost License 1.0 6 // (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // Authors: Gerbrand Kamphuis (meinmein.com), 9 // Marvin Meeng (meinmein.com). 10 module derelict.opencl.functions; 11 12 private 13 { 14 import derelict.opencl.types; 15 } 16 17 extern(System) 18 { 19 // OpenCL 1.0 20 alias nothrow cl_int function(cl_uint, cl_platform_id*, cl_uint*) da_clGetPlatformIDs; 21 alias nothrow cl_int function(cl_platform_id, cl_platform_info, size_t, void*, size_t*) da_clGetPlatformInfo; 22 alias nothrow cl_int function(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) da_clGetDeviceIDs; 23 alias nothrow cl_int function(cl_device_id, cl_device_info, size_t, void*, size_t*) da_clGetDeviceInfo; 24 alias nothrow cl_context function(const(cl_context_properties*), cl_uint, const(cl_device_id*), void function(const(char*), const(void*), size_t, void*), void*, cl_int*) da_clCreateContext; 25 alias nothrow cl_context function(const(cl_context_properties*), cl_device_type, void function(const(char*), const(void*), size_t, void*), void*, cl_int*) da_clCreateContextFromType; 26 alias nothrow cl_int function(cl_context) da_clRetainContext; 27 alias nothrow cl_int function(cl_context) da_clReleaseContext; 28 alias nothrow cl_int function(cl_context, cl_context_info, size_t, void*, size_t*) da_clGetContextInfo; 29 alias nothrow cl_command_queue function(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) da_clCreateCommandQueue; 30 alias nothrow cl_int function(cl_command_queue) da_clRetainCommandQueue; 31 alias nothrow cl_int function(cl_command_queue) da_clReleaseCommandQueue; 32 alias nothrow cl_int function(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) da_clGetCommandQueueInfo; 33 alias nothrow cl_mem function(cl_context, cl_mem_flags, size_t, void*, cl_int*) da_clCreateBuffer; 34 alias nothrow cl_int function(cl_mem) da_clRetainMemObject; 35 alias nothrow cl_int function(cl_mem) da_clReleaseMemObject; 36 alias nothrow cl_int function(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) da_clGetSupportedImageFormats; 37 alias nothrow cl_int function(cl_mem, cl_mem_info, size_t, void*, size_t*) da_clGetMemObjectInfo; 38 alias nothrow cl_int function(cl_mem, cl_image_info, size_t, void*, size_t*) da_clGetImageInfo; 39 alias nothrow cl_sampler function(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) da_clCreateSampler; 40 alias nothrow cl_int function(cl_sampler) da_clRetainSampler; 41 alias nothrow cl_int function(cl_sampler) da_clReleaseSampler; 42 alias nothrow cl_int function(cl_sampler, cl_sampler_info, size_t, void*, size_t*) da_clGetSamplerInfo; 43 alias nothrow cl_program function(cl_context, cl_uint, const(char*)*, const(size_t*), cl_int*) da_clCreateProgramWithSource; 44 alias nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(size_t*), const(ubyte*)*, cl_int*, cl_int*) da_clCreateProgramWithBinary; 45 alias nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(char*), cl_int*) da_clCreateProgramWithBuiltInKernels; 46 alias nothrow cl_int function(cl_program) da_clRetainProgram; 47 alias nothrow cl_int function(cl_program) da_clReleaseProgram; 48 alias nothrow cl_int function(cl_program, cl_uint, const(cl_device_id*), const(char*), void function(cl_program, void*), void*) da_clBuildProgram; 49 alias nothrow cl_int function(cl_program, cl_program_info, size_t, void*, size_t*) da_clGetProgramInfo; 50 alias nothrow cl_int function(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) da_clGetProgramBuildInfo; 51 alias nothrow cl_kernel function(cl_program, const(char*), cl_int*) da_clCreateKernel; 52 alias nothrow cl_int function(cl_program, cl_uint, cl_kernel*, cl_uint*) da_clCreateKernelsInProgram; 53 alias nothrow cl_int function(cl_kernel) da_clRetainKernel; 54 alias nothrow cl_int function(cl_kernel) da_clReleaseKernel; 55 alias nothrow cl_int function(cl_kernel, cl_uint, size_t, const(void*)) da_clSetKernelArg; 56 alias nothrow cl_int function(cl_kernel, cl_kernel_info, size_t, void*, size_t*) da_clGetKernelInfo; 57 alias nothrow cl_int function(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*) da_clGetKernelArgInfo; 58 alias nothrow cl_int function(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) da_clGetKernelWorkGroupInfo; 59 alias nothrow cl_int function(cl_uint, const(cl_event*)) da_clWaitForEvents; 60 alias nothrow cl_int function(cl_event, cl_event_info, size_t, void*, size_t*) da_clGetEventInfo; 61 alias nothrow cl_int function(cl_event) da_clRetainEvent; 62 alias nothrow cl_int function(cl_event) da_clReleaseEvent; 63 alias nothrow cl_int function(cl_event, cl_profiling_info, size_t, void*, size_t*) da_clGetEventProfilingInfo; 64 alias nothrow cl_int function(cl_command_queue) da_clFlush; 65 alias nothrow cl_int function(cl_command_queue) da_clFinish; 66 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadBuffer; 67 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteBuffer; 68 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBuffer; 69 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadImage; 70 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteImage; 71 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyImage; 72 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyImageToBuffer; 73 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, size_t, const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBufferToImage; 74 alias nothrow void* function(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const(cl_event*), cl_event*, cl_int*) da_clEnqueueMapBuffer; 75 alias nothrow void* function(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const(size_t*), const(size_t*), size_t*, size_t*, cl_uint, const(cl_event*), cl_event*, cl_int*) da_clEnqueueMapImage; 76 alias nothrow cl_int function(cl_command_queue, cl_mem, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueUnmapMemObject; 77 alias nothrow cl_int function(cl_command_queue, cl_kernel, cl_uint, const(size_t*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueNDRangeKernel; 78 alias nothrow cl_int function(cl_command_queue, cl_kernel, cl_uint, const(cl_event*), cl_event*) da_clEnqueueTask; 79 alias nothrow cl_int function(cl_command_queue, void function(void*), void*, size_t, cl_uint, const(cl_mem*), const(void*)*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueNativeKernel; 80 // OpenCL 1.0 Deprecated in 1.1 81 alias nothrow cl_int function(cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*) da_clSetCommandQueueProperty; 82 // OpenCL 1.1 83 alias nothrow cl_mem function(cl_mem, cl_mem_flags, cl_buffer_create_type, const(void*), cl_int*) da_clCreateSubBuffer; 84 alias nothrow cl_int function(cl_mem, void function(cl_mem, void*), void*) da_clSetMemObjectDestructorCallback; 85 alias nothrow cl_event function(cl_context, cl_int*) da_clCreateUserEvent; 86 alias nothrow cl_int function(cl_event, cl_int) da_clSetUserEventStatus; 87 alias nothrow cl_int function( cl_event, cl_int, void function(cl_event, cl_int, void*), void*) da_clSetEventCallback; 88 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadBufferRect; 89 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteBufferRect; 90 alias nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBufferRect; 91 // OpenCL 1.1 Deprecated in 1.2 92 alias nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), size_t, size_t, size_t, void*, cl_int*) da_clCreateImage2D; 93 alias nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), size_t, size_t, size_t, size_t, size_t, void*, cl_int*) da_clCreateImage3D; 94 alias nothrow cl_int function(cl_command_queue, cl_event*) da_clEnqueueMarker; 95 alias nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*)) da_clEnqueueWaitForEvents; 96 alias nothrow cl_int function(cl_command_queue) da_clEnqueueBarrier; 97 alias nothrow cl_int function() da_clUnloadCompiler; 98 alias nothrow void* function(const(char*)) da_clGetExtensionFunctionAddress; 99 // OpenCL 1.2 100 alias nothrow cl_int function(cl_device_id, const(cl_device_partition_property*), cl_uint, cl_device_id*, cl_uint*) da_clCreateSubDevices; 101 alias nothrow cl_int function(cl_device_id) da_clRetainDevice; 102 alias nothrow cl_int function(cl_device_id) da_clReleaseDevice; 103 alias nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), const(cl_image_desc*), void*, cl_int*) da_clCreateImage; 104 alias nothrow cl_int function(cl_program, cl_uint, const(cl_device_id*), const(char*), cl_uint, const(cl_program*), const(char*)*, void function(cl_program, void*), void*) da_clCompileProgram; 105 alias nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(char*), cl_uint, const(cl_program*), void function(cl_program, void*), void*, cl_int* ) da_clLinkProgram; 106 alias nothrow cl_int function(cl_platform_id) da_clUnloadPlatformCompiler; 107 alias nothrow cl_int function(cl_command_queue, cl_mem, const(void*), size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueFillBuffer; 108 alias nothrow cl_int function(cl_command_queue, cl_mem, const(void*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueFillImage; 109 alias nothrow cl_int function(cl_command_queue, cl_uint, const(cl_mem*), cl_mem_migration_flags, cl_uint, const(cl_event*), cl_event*) da_clEnqueueMigrateMemObjects; 110 alias nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*), cl_event*) da_clEnqueueMarkerWithWaitList; 111 alias nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*), cl_event*) da_clEnqueueBarrierWithWaitList; 112 alias nothrow void* function(cl_platform_id, const(char*)) da_clGetExtensionFunctionAddressForPlatform; 113 } 114 115 __gshared 116 { 117 // OpenCL 1.0 118 da_clGetPlatformIDs clGetPlatformIDs; 119 da_clGetPlatformInfo clGetPlatformInfo; 120 da_clGetDeviceIDs clGetDeviceIDs; 121 da_clGetDeviceInfo clGetDeviceInfo; 122 da_clCreateContext clCreateContext; 123 da_clCreateContextFromType clCreateContextFromType; 124 da_clRetainContext clRetainContext; 125 da_clReleaseContext clReleaseContext; 126 da_clGetContextInfo clGetContextInfo; 127 da_clCreateCommandQueue clCreateCommandQueue; 128 da_clRetainCommandQueue clRetainCommandQueue; 129 da_clReleaseCommandQueue clReleaseCommandQueue; 130 da_clGetCommandQueueInfo clGetCommandQueueInfo; 131 da_clCreateBuffer clCreateBuffer; 132 da_clRetainMemObject clRetainMemObject; 133 da_clReleaseMemObject clReleaseMemObject; 134 da_clGetSupportedImageFormats clGetSupportedImageFormats; 135 da_clGetMemObjectInfo clGetMemObjectInfo; 136 da_clGetImageInfo clGetImageInfo; 137 da_clCreateSampler clCreateSampler; 138 da_clRetainSampler clRetainSampler; 139 da_clReleaseSampler clReleaseSampler; 140 da_clGetSamplerInfo clGetSamplerInfo; 141 da_clCreateProgramWithSource clCreateProgramWithSource; 142 da_clCreateProgramWithBinary clCreateProgramWithBinary; 143 da_clRetainProgram clRetainProgram; 144 da_clReleaseProgram clReleaseProgram; 145 da_clBuildProgram clBuildProgram; 146 da_clGetProgramInfo clGetProgramInfo; 147 da_clGetProgramBuildInfo clGetProgramBuildInfo; 148 da_clCreateKernel clCreateKernel; 149 da_clCreateKernelsInProgram clCreateKernelsInProgram; 150 da_clRetainKernel clRetainKernel; 151 da_clReleaseKernel clReleaseKernel; 152 da_clSetKernelArg clSetKernelArg; 153 da_clGetKernelInfo clGetKernelInfo; 154 da_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo; 155 da_clWaitForEvents clWaitForEvents; 156 da_clGetEventInfo clGetEventInfo; 157 da_clRetainEvent clRetainEvent; 158 da_clReleaseEvent clReleaseEvent; 159 da_clGetEventProfilingInfo clGetEventProfilingInfo; 160 da_clFlush clFlush; 161 da_clFinish clFinish; 162 da_clEnqueueReadBuffer clEnqueueReadBuffer; 163 da_clEnqueueWriteBuffer clEnqueueWriteBuffer; 164 da_clEnqueueCopyBuffer clEnqueueCopyBuffer; 165 da_clEnqueueReadImage clEnqueueReadImage; 166 da_clEnqueueWriteImage clEnqueueWriteImage; 167 da_clEnqueueCopyImage clEnqueueCopyImage; 168 da_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer; 169 da_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage; 170 da_clEnqueueMapBuffer clEnqueueMapBuffer; 171 da_clEnqueueMapImage clEnqueueMapImage; 172 da_clEnqueueUnmapMemObject clEnqueueUnmapMemObject; 173 da_clEnqueueNDRangeKernel clEnqueueNDRangeKernel; 174 da_clEnqueueTask clEnqueueTask; 175 da_clEnqueueNativeKernel clEnqueueNativeKernel; 176 // OpenCL 1.0 Deprecated in 1.1 177 da_clSetCommandQueueProperty clSetCommandQueueProperty; 178 // OpenCL 1.1 179 da_clCreateSubBuffer clCreateSubBuffer; 180 da_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback; 181 da_clCreateUserEvent clCreateUserEvent; 182 da_clSetUserEventStatus clSetUserEventStatus; 183 da_clSetEventCallback clSetEventCallback; 184 da_clEnqueueReadBufferRect clEnqueueReadBufferRect; 185 da_clEnqueueWriteBufferRect clEnqueueWriteBufferRect; 186 da_clEnqueueCopyBufferRect clEnqueueCopyBufferRect; 187 // OpenCL 1.1 Deprecated in 1.2 188 da_clCreateImage2D clCreateImage2D; 189 da_clCreateImage3D clCreateImage3D; 190 da_clEnqueueMarker clEnqueueMarker; 191 da_clEnqueueWaitForEvents clEnqueueWaitForEvents; 192 da_clEnqueueBarrier clEnqueueBarrier; 193 da_clUnloadCompiler clUnloadCompiler; 194 da_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; 195 // OpenCL 1.2 196 da_clCreateSubDevices clCreateSubDevices; 197 da_clRetainDevice clRetainDevice; 198 da_clReleaseDevice clReleaseDevice; 199 da_clCreateImage clCreateImage; 200 da_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels; 201 da_clCompileProgram clCompileProgram; 202 da_clLinkProgram clLinkProgram; 203 da_clUnloadPlatformCompiler clUnloadPlatformCompiler; 204 da_clGetKernelArgInfo clGetKernelArgInfo; 205 da_clEnqueueFillBuffer clEnqueueFillBuffer; 206 da_clEnqueueFillImage clEnqueueFillImage; 207 da_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects; 208 da_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList; 209 da_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList; 210 da_clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform; 211 }